package com.cn.wanxi.servlet;

import com.alibaba.fastjson.JSON;
import com.cn.wanxi.result.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;
import com.cn.wanxi.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//         1.如果前端传递中文时，可以会出现乱码
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
//        2.要得到前端的数据
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");
        String sessionCode = (String) req.getSession().getAttribute("code");
//        3.封装model
        UserModel userModel = new UserModel();
        userModel.setUsername(username);
        userModel.setPassword(password);
        userModel.setCode(code);
        userModel.setSessionCode(sessionCode);
//        4.调用服务逻辑层
        UserService userService = new UserServiceImpl();
//        因为我们后面会做很多操作语句，
//        每一次前端页面进行操作，
//        无论成败，都应该给前端一个反馈
//        所以需要建立一个统一的返回对象
//        那么统一的返回对象格式是什么？
//        需要结合我们当前使用的框架？前端框架
//        前端需要什么格式，我们就返回什么格式
//        我们前端用的是layui和xadmin框架？
//        5.得到统一的返回值对象
        ResultModel resultModel = userService.login(userModel);
        if ("success".equals(resultModel.getMsg())) {
            req.getSession().setAttribute("username", username);
        }
//        ResultModel resultModel = new ResultModel();
//        resultModel.setMsg(msg);
//        System.out.println(JSON.toJSONString(resultModel));
//       6.将数据返回给前端页面
        resp.getWriter().println(JSON.toJSONString(resultModel));
//        req.setAttribute("username", username);
//        req.getRequestDispatcher("/html/login.html").forward(req, resp);
    }
}
